<template>
	<view class="camera-box">
		<camera device-position="front" flash="off" binderror="error" class="camera"></camera>
		<view class="face-box">
			<button class="face" type="primary" @click="takePhoto()"> 人脸识别 </button>
		</view>
	</view>

</template>

<script>
	export default {
		data() {
			return {
				src: '',
				base64: "",
				baidutoken: "",
				msg: null
			}
		},
		methods: {
			//拍照并编码
			takePhoto() {
				var that = this;
				//拍照
				const ctx = wx.createCameraContext()
				ctx.takePhoto({
					quality: 'high',
					success: (res) => {
						that.setData({
							src: res.tempImagePath
						})
						//图片base64编码
						wx.getFileSystemManager().readFile({
							filePath: res.tempImagePath, //选择图片返回的相对路径
							encoding: 'base64', //编码格式
							success: res => { //成功的回调          
								that.setData({
									base64: res.data
								})
								that.checkPhoto();
							}
						})
					}
				})

				wx.showToast({
					title: '请重试',
					icon: 'loading',
					duration: 500
				})
			},
			error(e) {
				console.log(e.detail)
			},
			checkPhoto() {
				console.log("执行到checkPhoto方法------")
				var that = this;
				//acess_token获取
				wx.request({
					url: 'https://aip.baidubce.com/oauth/2.0/token', //真实的接口地址
					data: {
						grant_type: 'client_credentials',
						client_id: 'wYvymTEg0CwqnXxFXHSVeZBC', //用你创建的应用的API Key
						client_secret: 'oGhA8u4wkpckwl0i2F8bmfzssaefk2OG' //用你创建的应用的Secret Key
					},
					header: {
						'Content-Type': 'application/json' // 默认值
					},
					success(res) {
						that.setData({
							baidutoken: res.data.access_token //获取到token
						})
						that.validPhoto();
					}
				})
			},
			validPhoto() {
				console.log("执行到validPhoto方法------")
				var that = this;
				//上传人脸进行 比对
				wx.request({
					url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' + this.baidutoken,
					method: 'POST',
					data: {
						image: this.base64,
						image_type: 'BASE64',
						group_id_list: '27549803', //自己建的用户组id
					},
					header: {
						'Content-Type': 'application/json' // 默认值
					},
					success(res) {
						that.setData({
							// msg: res.data.result.user_list[0].score
							msg: res.data.error_msg
						})

						//做成功判断
						if (that.msg == "pic not has face") {
							wx.showToast({
								title: '未捕获到人脸',
								icon: 'error',
							})
						}
						if (that.msg == 'SUCCESS') {
							if (res.data.result.user_list[0].score > 80) {
								wx.showToast({
									title: '人脸识别成功',
									icon: 'success',
								})
							} else {
								wx.showToast({
									title: '人脸识别失败',
									icon: 'error',
								})
							}
						}
					}
				});
			},
			setData: function(obj) {
				let that = this;
				let keys = [];
				let val, data;
				Object.keys(obj).forEach(function(key) {
					keys = key.split('.');
					val = obj[key];
					data = that.$data;
					keys.forEach(function(key2, index) {
						if (index + 1 == keys.length) {
							that.$set(data, key2, val);
						} else {
							if (!data[key2]) {
								that.$set(data, key2, {});
							}
						}
						data = data[key2];
					})
				});
			},
		},
		
	}
	
</script>

<style>
	.camera-box {
		width: 100%;
		height: 100vh;
		position: relative;
	}

	.camera-box .camera {
		width: 100%;
		height: 100%;
		position: absolute;
		top: 0;
	}

	.camera-box .face-box {
		position: absolute;
		width: 100%;
		bottom: 40px;
		padding: 40rpx;
		box-sizing: border-box;
	}

	.camera-box .face-box .face {
		width: 100%;
	}
</style>
